﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using WindowsFormApplication.FormBase;
using WindowsFormsView;
using WindowsFormsPresenter.CountryRegion;

namespace WindowsFormApplication.FormCategory
{
    public partial class frmCountryRegionDetail : frmBaseCategoryDetail, ICountryRegionView
    {
        private CountryRegionPresenter _countryRegionPresenter;

        public string CountryRegionCode
        {
            get { return txtCountryRegionCode.Text; }
            set { txtCountryRegionCode.Text = value; }
        }

        public string CountryRegionName
        {
            get { return txtCountryRegionName.Text; }
            set { txtCountryRegionName.Text = value; }
        }

        public DateTime CreateDate
        {
            get
            {
                if (dtCreateDate.Value != null)
                    return DateTime.Parse(dtCreateDate.Value.ToString());
                else
                    return DateTime.Parse(dtCreateDate.MinDate.ToString());
            }
            set
            {
                if (value.ToString().Equals("1/1/1753 12:00:00 AM")) { dtModifiedDate.Value = null; }
                else
                {
                    string[] date = value.ToString().Split('/');
                    dtCreateDate.Value = new DateTime(Convert.ToInt32(date[2].Substring(0, 4)), Convert.ToInt32(date[0]), Convert.ToInt32(date[1]));
                }
            }
        }

        public DateTime ModifiedDate
        {
            get
            {
                if (dtModifiedDate.Value != null)
                    return DateTime.Parse(dtModifiedDate.Value.ToString());
                else
                    return DateTime.Parse(dtModifiedDate.MinDate.ToString());
            }
            set
            {
                if (value.ToString().Equals("1/1/1753 12:00:00 AM")) { dtModifiedDate.Value = null; }
                else
                {
                    string[] date = value.ToString().Split('/');
                    dtModifiedDate.Value = new DateTime(Convert.ToInt32(date[2].Substring(0, 4)), Convert.ToInt32(date[0]), Convert.ToInt32(date[1]));
                }
            }
        }

        public string Description
        {
            get { return txtDescription.Text; }
            set { txtDescription.Text = value; }
        }

        public bool IsActive
        {
            get { return chkIsActive.Checked; }
            set { chkIsActive.CheckedValue = value; }
        }

        public frmCountryRegionDetail()
        {
            InitializeComponent();
        }

        protected override void InitData()
        {
            _countryRegionPresenter = new CountryRegionPresenter(this);

            if (KeyValue != null)
                _countryRegionPresenter.Display(KeyValue);
        }

        protected override bool ValidData()
        {
            if (string.IsNullOrEmpty(CountryRegionCode))
            {
                ShowMessageBox("Bạn chưa nhập mã quốc gia !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtCountryRegionCode.Focus();
                return false;
            }
            if (string.IsNullOrEmpty(CountryRegionName))
            {
                ShowMessageBox("Bạn chưa nhập tên quốc gia !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtCountryRegionName.Focus();
                return false;
            }
            return true;
        }

        protected override bool SaveData()
        {
            try
            {
                if (eActionMode == ActionMode.AddNew)
                {
                    _countryRegionPresenter.Save(true);
                    ShowMessageBox("Thêm mới dữ liệu thành công !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    _countryRegionPresenter.Save(false);
                    ShowMessageBox("Sửa dữ liệu thành công !", "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (ApplicationException ex)
            {
                ShowMessageBox(ex.Message, "Thông báo thay đổi dữ liệu !", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            return true;
        }

        protected override void LoadFormDetail()
        {
            base.LoadFormDetail();
            if (this.eActionMode == ActionMode.AddNew)
                txtCountryRegionCode.Enabled = true;
            else
                txtCountryRegionCode.Enabled = false;
        }
    }
}
